// exports.AL_Framework_Lobby_Manager = void 0;
// var $bundleUpdateHandlerImpl = require("./AL_Framework_Bundle_Update_Handler_Impl");
// var $update = require("./AL_Framework_Update");
// var $updateItem = require("./AL_Framework_Update_Item");
// var $lobbyBuriedPoint = require("./AL_Framework_Lobby_Buried_Point");
// var $lobbyConfig = require("./AL_Framework_Lobby_Config");
// var d = (function () {
//     function e() {
//         this.lobbyConfig = $lobbyConfig.AL_Framework_Lobby_Config;
//         this.lobbyBuriedPoint = $lobbyBuriedPoint.AL_Framework_Lobby_Buried_Point.getInstance();
//         this._lobbyData = null;
//     }
//     e.Instance = function () {
//         return this._instance || (this._instance = new e());
//     };
//     e.prototype.jiazai_dating_shuju = function () {
//         var e = this;
//         return this._lobbyData
//             ? Promise.resolve()
//             : window.gameData
//             ? ((this._lobbyData = {
//                   games: [],
//                   deletes: [],
//                   adds: []
//               }),
//               this.shezhi_dating_shuju(window.gameData.games),
//               Promise.resolve())
//             : new Promise(function (t) {
//                   ailin_sdk_manager.instance.shezhiHttpGetShuju2($lobbyConfig.AL_Framework_Lobby_Config.LOBBY_DATA_URL, function (o) {
//                       var i;
//                       var n;
//                       if (o) {
//                           var a = JSON.parse(o);
//                           e._lobbyData = {
//                               games: [],
//                               deletes: [],
//                               adds: []
//                           };
//                           if (
//                               200 == a.code &&
//                               (null ===
//                                   (n = null === (i = null == a ? void 0 : a.data) || void 0 === i ? void 0 : i.games) ||
//                               void 0 === n
//                                   ? void 0
//                                   : n.length) > 0
//                           ) {
//                               var s = a.data.games;
//                               if (AL_APP_SDK_MANAGER.updateManager.is_skip_check_update) {
//                                   cc.sys.localStorage.removeItem("deleteLabboData");
//                                   cc.sys.localStorage.removeItem("addLabboData");
//                               } else {
//                                   if (cc.sys.localStorage.getItem("labboData")) {
//                                       var r = [];
//                                       for (var c = 0; c < s.length; c++) {
//                                           r.push(s[c].bundle);
//                                       }
//                                       var l = JSON.parse(cc.sys.localStorage.getItem("deleteLabboData"));
//                                       var d = [];
//                                       if (l) {
//                                           for (c = 0; c < l.length; c++) {
//                                               d.push(l[c]);
//                                           }
//                                       } else {
//                                           l = [];
//                                       }
//                                       var u = JSON.parse(cc.sys.localStorage.getItem("labboData"));
//                                       var h = JSON.parse(cc.sys.localStorage.getItem("addLabboData"));
//                                       if (!h) {
//                                           h = [];
//                                       }
//                                       var p = [];
//                                       for (c = 0; c < u.length; c++) {
//                                           p.push(u[c].bundle);
//                                       }
//                                       for (c = 0; c < r.length; c++) {
//                                           if (-1 == p.indexOf(r[c]) && -1 == h.indexOf(r[c])) {
//                                               h.push(r[c]);
//                                           }
//                                       }
//                                       cc.sys.localStorage.setItem("addLabboData", JSON.stringify(h));
//                                       e._lobbyData.adds = h;
//                                       for (c = 0; c < u.length; c++) {
//                                           if (
//                                               -1 == r.indexOf(u[c].bundle) &&
//                                               -1 == d.indexOf(u[c].bundle) &&
//                                               AL_APP_SDK_MANAGER.updateManager.get_Hash(u[c].bundle)
//                                           ) {
//                                               l.push(u[c]);
//                                           }
//                                       }
//                                       var g = [];
//                                       for (c = 0; c < l.length; c++) {
//                                           if (r.indexOf(l[c].bundle) > -1) {
//                                               g.push(c);
//                                           }
//                                       }
//                                       if (g.length > 0) {
//                                           for (c = 0; c < g.length; c++) {
//                                               l.splice(g[c], 1);
//                                           }
//                                       }
//                                       cc.sys.localStorage.setItem("deleteLabboData", JSON.stringify(l));
//                                       e._lobbyData.deletes = l;
//                                   }
//                               }
//                               cc.sys.localStorage.setItem("labboData", JSON.stringify(a.data.games));
//                               e._lobbyData.games = a.data.games;
//                           }
//                       }
//                       console.log("lobbyData:", e._lobbyData);
//                       t();
//                   });
//               });
//     };
//     e.prototype.huoqu_dating_shuju = function () {
//         return __awaiter(this, void 0, void 0, function () {
//             return __generator(this, function (e) {
//                 switch (e.label) {
//                     case 0:
//                         return [4, this.jiazai_dating_shuju()];
//                     case 1:
//                         e.sent();
//                         return [2, this._lobbyData];
//                 }
//             });
//         });
//     };
//     e.prototype.shezhi_dating_shuju = function (e) {
//         cc.sys.localStorage.setItem("labboData", JSON.stringify(e));
//         this._lobbyData.games = e;
//     };
//     e.prototype.hotupdate = function (e) {
//         var t = e.msg;
//         var o = e.node;
//         var i = e.onEvent;
//         var n = e.chuli_jiazai_ziyuanbao;
//         var c = e.on_Pre_Version_Failed;
//         var d = e.on_Downloading;
//         var u = e.on_Download_Complete;
//         var h = e.on_Update_Failed;
//         if (AL_APP_SDK_MANAGER.updateManager.is_skip_check_update) {
//             t.status = $update.AL_Framework_Update.Status.UP_TO_DATE;
//         }
//         if (t.status !== $update.AL_Framework_Update.Status.UP_TO_DATE) {
//             t.status == $update.AL_Framework_Update.Status.NEED_DOWNLOAD
//                 ? i && i(t, $lobbyConfig.AL_Framework_Lobby_Config.BUNDLE_STATE.CLICK)
//                 : t.status == $update.AL_Framework_Update.Status.NEED_UPDATE &&
//                   i &&
//                   i(t, $lobbyConfig.AL_Framework_Lobby_Config.BUNDLE_STATE.REPLACE);
//             var p = new $bundleUpdateHandlerImpl.AL_Framework_Bundle_Update_Handler_Impl();
//             p.chuli_jiazai_ziyuanbao = function (e) {
//                 if (n) {
//                     n(e);
//                 }
//             };
//             p.on_Pre_Version_Failed = function (e, t) {
//                 if (c) {
//                     c(e, t, p);
//                 }
//             };
//             p.on_Download_Complete = function (n) {
//                 t.status == $update.AL_Framework_Update.Status.NEED_DOWNLOAD
//                     ? i && i(t, $lobbyConfig.AL_Framework_Lobby_Config.BUNDLE_STATE.DOWNLOAD)
//                     : t.status == $update.AL_Framework_Update.Status.NEED_UPDATE &&
//                       i &&
//                       i(t, $lobbyConfig.AL_Framework_Lobby_Config.BUNDLE_STATE.REPLACE_DOWNLOAD);
//                 t.status = $update.AL_Framework_Update.Status.UP_TO_DATE;
//                 if (u) {
//                     u(n, p);
//                 }
//                 if (e.downAndLoad) {
//                     AL_APP_SDK_MANAGER.updateManager.dowonLoad(
//                         new $updateItem.AL_Framework_Update_Item(
//                             {
//                                 name: t.name,
//                                 bundle: t.bundle,
//                                 id: t.id,
//                                 starScene: t.startScene,
//                                 orientation: t.orientation,
//                                 node: o
//                             },
//                             p
//                         )
//                     );
//                 }
//             };
//             p.on_Downloading = function (e, t) {
//                 if (d) {
//                     d(e, t);
//                 }
//             };
//             p.on_Update_Failed = function (e) {
//                 if (h) {
//                     h(e);
//                 }
//             };
//             AL_APP_SDK_MANAGER.updateManager.dowonLoad(
//                 new $updateItem.AL_Framework_Update_Item(
//                     {
//                         name: t.name,
//                         bundle: t.bundle,
//                         id: t.id,
//                         starScene: t.startScene,
//                         orientation: t.orientation,
//                         node: o
//                     },
//                     p
//                 )
//             );
//         } else {
//             if (e.chuli_jiazai_ziyuanbao) {
//                 e.chuli_jiazai_ziyuanbao(null);
//             }
//         }
//     };
//     e.prototype.loadBundle = function (e) {
//         console.log("bundleMsg:", e.msg);
//         var t = e.msg;
//         var o = e.onEvent;
//         return new Promise(function (e) {
//             AL_APP_SDK_MANAGER.bundleManager.loadBundle({
//                 bundle: t.bundle,
//                 option: t.inside ? AL_APP_SDK_MANAGER.updateManager.get_Hash_Inside(t.bundle) : AL_APP_SDK_MANAGER.updateManager.get_Hash(t.bundle),
//                 completed: function () {
//                     if (o) {
//                         o(t, $lobbyConfig.AL_Framework_Lobby_Config.BUNDLE_STATE.START);
//                     }
//                     var i = AL_APP_SDK_MANAGER.updateManager.get_Hash(t.bundle);
//                     if (i) {
//                         ailin_sdk_manager.addBossTitle(t.bundle + "-hash:" + i.version);
//                     }
//                     if (void 0 !== t.orientation) {
//                         ailin_sdk_manager.setOrientation(t.orientation);
//                         var n = cc.view.getFrameSize();
//                         cc.view.setOrientation(
//                             t.orientation ? cc.macro.ORIENTATION_PORTRAIT : cc.macro.ORIENTATION_LANDSCAPE
//                         );
//                         if (!t.orientation) {
//                             if (n.height > n.width) {
//                                 cc.view.setFrameSize(n.height, n.width);
//                                 cc.Canvas.instance.designResolution = cc.size(1280, 720);
//                             }
//                         }
//                     }
//                     e();
//                 }
//             });
//         });
//     };
//     e.prototype.deleteBundle = function () {};
//     e._instance = null;
//     return e;
// })();
// exports.AL_Framework_Lobby_Manager = d;


// const $bundleUpdateHandlerImpl = require("./AL_Framework_Bundle_Update_Handler_Impl");
const $update = require("./AL_Framework_Update");
// const $updateItem = require("./AL_Framework_Update_Item");
const $lobbyBuriedPoint = require("./AL_Framework_Lobby_Buried_Point");
const $lobbyConfig = require("./AL_Framework_Lobby_Config");

/**
 * AL_Framework_Lobby_Manager 管理类，用于处理大厅相关数据和操作
 */
class AL_Framework_Lobby_Manager {
    constructor() {
        this.lobbyConfig = $lobbyConfig.AL_Framework_Lobby_Config;
        this.lobbyBuriedPoint = $lobbyBuriedPoint.AL_Framework_Lobby_Buried_Point.getInstance();
        this._lobbyData = null;
    }

    /**
     * 获取 AL_Framework_Lobby_Manager 实例
     * @returns {AL_Framework_Lobby_Manager} AL_Framework_Lobby_Manager 实例
     */
    static Instance() {
        return this._instance || (this._instance = new AL_Framework_Lobby_Manager());
    }

    /**
     * 加载大厅数据
     * @returns {Promise<void>}
     */
    jiazai_dating_shuju() {
        if (this._lobbyData) {
            return Promise.resolve();
        }

        if (window.gameData) {
            this._lobbyData = {
                games: [],
                deletes: [],
                adds: []
            };
            this.shezhi_dating_shuju(window.gameData.games);
        }
        return Promise.resolve();

        // return new Promise((resolve) => {
        //     ailin_sdk_manager.instance.shezhiHttpGetShuju2(
        //         $lobbyConfig.AL_Framework_Lobby_Config.LOBBY_DATA_URL,
        //         (response) => {
        //             if (response) {
        //                 const parsedResponse = JSON.parse(response);
        //                 this._lobbyData = {
        //                     games: [],
        //                     deletes: [],
        //                     adds: []
        //                 };
        //                 const games = parsedResponse.data.games;
        //                 this._chuliBensiCunchuGengxin(games);
        //                 cc.sys.localStorage.setItem("labboData", JSON.stringify(games));
        //                 this._lobbyData.games = games;

        //                 // if (parsedResponse.code === 200 && parsedResponse.data?.games?.length > 0) {
        //                 //     if (AL_APP_SDK_MANAGER.updateManager.is_skip_check_update) {
        //                 //         cc.sys.localStorage.removeItem("deleteLabboData");
        //                 //         cc.sys.localStorage.removeItem("addLabboData");
        //                 //     } else {
        //                 //     }
        //                 // }
        //             }
        //             console.log("lobbyData:", this._lobbyData);
        //             resolve();
        //         }
        //     );
        // });
    }

    /**
     * 获取大厅数据
     * @returns {Promise<object>} 大厅数据
     */
    async huoqu_dating_shuju() {
        await this.jiazai_dating_shuju();
        return this._lobbyData;
    }

    /**
     * 设置大厅游戏数据
     * @param {Array} games 游戏数据数组
     */
    shezhi_dating_shuju(games) {
        cc.sys.localStorage.setItem("labboData", JSON.stringify(games));
        this._lobbyData.games = games;
    }

    // /**
    //  * 热更新处理
    //  * @param {object} updateData 更新数据
    //  */
    // hotupdate(updateData) {
    //     const { msg, node, onEvent, chuli_jiazai_ziyuanbao, on_Pre_Version_Failed, on_Downloading, on_Download_Complete, on_Update_Failed } = updateData;

    //     if (AL_APP_SDK_MANAGER.updateManager.is_skip_check_update) {
    //         msg.status = $update.AL_Framework_Update.Status.UP_TO_DATE;
    //     }

    //     if (msg.status !== $update.AL_Framework_Update.Status.UP_TO_DATE) {
    //         this._chuliGengxinZhuangtai(msg, onEvent);
    //         const bundleUpdateHandler = new $bundleUpdateHandlerImpl.AL_Framework_Bundle_Update_Handler_Impl();

    //         bundleUpdateHandler.chuli_jiazai_ziyuanbao = (e) => chuli_jiazai_ziyuanbao && chuli_jiazai_ziyuanbao(e);
    //         bundleUpdateHandler.on_Pre_Version_Failed = (e, t) => on_Pre_Version_Failed && on_Pre_Version_Failed(e, t, bundleUpdateHandler);
    //         bundleUpdateHandler.on_Download_Complete = (downloadData) => {
    //             this._chuliXiazaiWancheng(msg, onEvent, on_Download_Complete, downloadData, node, updateData, bundleUpdateHandler);
    //         };
    //         bundleUpdateHandler.on_Downloading = (e, t) => on_Downloading && on_Downloading(e, t);
    //         bundleUpdateHandler.on_Update_Failed = (e) => on_Update_Failed && on_Update_Failed(e);

    //         AL_APP_SDK_MANAGER.updateManager.dowonLoad(new $updateItem.AL_Framework_Update_Item({ ...msg, node }, bundleUpdateHandler));
    //     } else {
    //         chuli_jiazai_ziyuanbao && chuli_jiazai_ziyuanbao(null);
    //     }
    // }

    /**
     * 加载 Bundle
     * @param {object} bundleData Bundle 数据
     * @returns {Promise<void>}
     */
    loadBundle(bundleData) {
        console.log("bundleMsg:", bundleData.msg);
        const { msg, onEvent } = bundleData;

        return new Promise((resolve) => {
            AL_APP_SDK_MANAGER.bundleManager.loadBundle({
                bundle: msg.bundle,
                option: msg.inside ? AL_APP_SDK_MANAGER.updateManager.get_Hash_Inside(msg.bundle) : AL_APP_SDK_MANAGER.updateManager.get_Hash(msg.bundle),
                completed: () => {
                    onEvent && onEvent(msg, $lobbyConfig.AL_Framework_Lobby_Config.BUNDLE_STATE.START);

                    const bundleHash = AL_APP_SDK_MANAGER.updateManager.get_Hash(msg.bundle);
                    if (bundleHash) {
                        ailin_sdk_manager.addBossTitle(`${msg.bundle}-hash:${bundleHash.version}`);
                    }

                    if (msg.orientation !== undefined) {
                        this._chuliPingmuFangxiang(msg.orientation);
                    }

                    resolve();
                }
            });
        });
    }

    deleteBundle() {
        // Placeholder for deleteBundle implementation if needed in the future
    }

    /**
     * 处理更新状态
     * @param {object} msg 更新消息
     * @param {function} onEvent 事件回调
     */
    _chuliGengxinZhuangtai(msg, onEvent) {
        if (msg.status === $update.AL_Framework_Update.Status.NEED_DOWNLOAD) {
            onEvent && onEvent(msg, $lobbyConfig.AL_Framework_Lobby_Config.BUNDLE_STATE.CLICK);
        } else if (msg.status === $update.AL_Framework_Update.Status.NEED_UPDATE) {
            onEvent && onEvent(msg, $lobbyConfig.AL_Framework_Lobby_Config.BUNDLE_STATE.REPLACE);
        }
    }

    /**
     * 处理下载完成
     * @param {object} msg 更新消息
     * @param {function} onEvent 事件回调
     * @param {function} on_Download_Complete 下载完成回调
     * @param {object} downloadData 下载数据
     * @param {object} node 节点
     * @param {object} updateData 更新数据
     * @param {object} bundleUpdateHandler Bundle 更新处理器
     */
    _chuliXiazaiWancheng(msg, onEvent, on_Download_Complete, downloadData, node, updateData, bundleUpdateHandler) {
        if (msg.status === $update.AL_Framework_Update.Status.NEED_DOWNLOAD) {
            onEvent && onEvent(msg, $lobbyConfig.AL_Framework_Lobby_Config.BUNDLE_STATE.DOWNLOAD);
        } else if (msg.status === $update.AL_Framework_Update.Status.NEED_UPDATE) {
            onEvent && onEvent(msg, $lobbyConfig.AL_Framework_Lobby_Config.BUNDLE_STATE.REPLACE_DOWNLOAD);
        }

        msg.status = $update.AL_Framework_Update.Status.UP_TO_DATE;

        on_Download_Complete && on_Download_Complete(downloadData, bundleUpdateHandler);

        if (updateData.downAndLoad) {
            // AL_APP_SDK_MANAGER.updateManager.dowonLoad(new $updateItem.AL_Framework_Update_Item({ ...msg, node }, bundleUpdateHandler));
        }
    }

    /**
     * 处理本地存储更新
     * @param {Array} games 游戏数据数组
     */
    _chuliBensiCunchuGengxin(games) {
        const storedData = cc.sys.localStorage.getItem("labboData");
        if (storedData) {
            const deletions = JSON.parse(cc.sys.localStorage.getItem("deleteLabboData")) || [];
            const additions = JSON.parse(cc.sys.localStorage.getItem("addLabboData")) || [];
            const storedGames = JSON.parse(storedData);

            const storedBundles = storedGames.map(game => game.bundle);
            const gameBundles = games.map(game => game.bundle);

            // AL_Framework_Update additions
            gameBundles.forEach(bundle => {
                if (!storedBundles.includes(bundle) && !additions.includes(bundle)) {
                    additions.push(bundle);
                }
            });
            cc.sys.localStorage.setItem("addLabboData", JSON.stringify(additions));
            this._lobbyData.adds = additions;

            // AL_Framework_Update deletions
            storedGames.forEach(storedGame => {
                if (!gameBundles.includes(storedGame.bundle) && !deletions.includes(storedGame.bundle)) {
                    deletions.push(storedGame);
                }
            });

            // Remove games that are no longer deleted
            const validDeletions = deletions.filter(deletedGame => !gameBundles.includes(deletedGame.bundle));
            cc.sys.localStorage.setItem("deleteLabboData", JSON.stringify(validDeletions));
            this._lobbyData.deletes = validDeletions;
        }
    }

    /**
     * 处理屏幕方向
     * @param {boolean} orientation 屏幕方向
     */
    _chuliPingmuFangxiang(orientation) {
        ailin_sdk_manager.setOrientation(orientation);
        const frameSize = cc.view.getFrameSize();
        cc.view.setOrientation(orientation ? cc.macro.ORIENTATION_PORTRAIT : cc.macro.ORIENTATION_LANDSCAPE);

        if (!orientation && frameSize.height > frameSize.width) {
            cc.view.setFrameSize(frameSize.height, frameSize.width);
            cc.Canvas.instance.designResolution = cc.size(1280, 720);
        }
    }
}

AL_Framework_Lobby_Manager._instance = null;
exports.AL_Framework_Lobby_Manager = AL_Framework_Lobby_Manager;
